home *** CD-ROM | disk | FTP | other *** search
/ Apple WWDC 1996 / WWDC96_1996 (CD).toast / Technology Materials / MacOS 8 Resources / Developer Tools / Mac OS 8 Interfaces & Libraries / Interfaces / CIncludes / Quickdraw.h < prev    next >
C/C++ Source or Header  |  1996-05-01  |  56KB  |  1,695 lines

  1. /*
  2.      File:        Quickdraw.h
  3.  
  4.      Contains:    Quickdraw Graphics Interfaces.
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Release:    Universal Interfaces 3.0d3 on Copland DR1
  8.  
  9.      Copyright:    © 1984-1996 by Apple Computer, Inc.  All rights reserved.
  10.  
  11.      Bugs?:        If you find a problem with this file, send the file and version
  12.                  information (from above) and the problem description to:
  13.  
  14.                      Internet:    apple.bugs@applelink.apple.com
  15.                      AppleLink:    APPLE.BUGS
  16.  
  17. */
  18. #ifndef __QUICKDRAW__
  19. #define __QUICKDRAW__
  20.  
  21. #ifndef __TYPES__
  22. #include <Types.h>
  23. #endif
  24. #ifndef __MIXEDMODE__
  25. #include <MixedMode.h>
  26. #endif
  27. #ifndef __QUICKDRAWTEXT__
  28. #include <QuickdrawText.h>
  29. #endif
  30.  
  31. #ifdef __cplusplus
  32. extern "C" {
  33. #endif
  34.  
  35. #if PRAGMA_IMPORT_SUPPORTED
  36. #pragma import on
  37. #endif
  38.  
  39. #if PRAGMA_ALIGN_SUPPORTED
  40. #pragma options align=mac68k
  41. #endif
  42.  
  43. struct RGBColor {
  44.     unsigned short                     red;                        /*magnitude of red component*/
  45.     unsigned short                     green;                        /*magnitude of green component*/
  46.     unsigned short                     blue;                        /*magnitude of blue component*/
  47. };
  48. typedef struct RGBColor RGBColor;
  49.  
  50. typedef RGBColor *RGBColorPtr;
  51. typedef RGBColorPtr *RGBColorHdl;
  52. struct ColorSpec {
  53.     short                             value;                        /*index or other value*/
  54.     RGBColor                         rgb;                        /*true color*/
  55. };
  56. typedef struct ColorSpec ColorSpec;
  57.  
  58. typedef ColorSpec *ColorSpecPtr;
  59. typedef ColorSpec CSpecArray[1];
  60. struct ColorTable {
  61.     long                             ctSeed;                        /*unique identifier for table*/
  62.     short                             ctFlags;                    /*high bit: 0 = PixMap; 1 = device*/
  63.     short                             ctSize;                        /*number of entries in CTTable*/
  64.     CSpecArray                         ctTable;                    /*array [0..0] of ColorSpec*/
  65. };
  66. typedef struct ColorTable ColorTable;
  67.  
  68. typedef ColorTable *CTabPtr;
  69. typedef CTabPtr *CTabHandle;
  70. struct xColorSpec {
  71.     short                             value;                        /*index or other value*/
  72.     RGBColor                         rgb;                        /*true color*/
  73.     short                             xalpha;
  74. };
  75. typedef struct xColorSpec xColorSpec;
  76.  
  77. typedef xColorSpec *xColorSpecPtr;
  78. typedef xColorSpec xCSpecArray[1];
  79. struct GammaTbl {
  80.     short                             gVersion;                    /*gamma version number*/
  81.     short                             gType;                        /*gamma data type*/
  82.     short                             gFormulaSize;                /*Formula data size*/
  83.     short                             gChanCnt;                    /*number of channels of data*/
  84.     short                             gDataCnt;                    /*number of values/channel*/
  85.     short                             gDataWidth;                    /*bits/corrected value (data packed to next larger byte size)*/
  86.     short                             gFormulaData[1];            /*data for formulas followed by gamma values*/
  87. };
  88. typedef struct GammaTbl GammaTbl;
  89.  
  90. typedef GammaTbl *GammaTblPtr;
  91. typedef GammaTblPtr *GammaTblHandle;
  92. typedef short Bits16[16];
  93. struct Cursor {
  94.     Bits16                             data;
  95.     Bits16                             mask;
  96.     Point                             hotSpot;
  97. };
  98. typedef struct Cursor Cursor;
  99.  
  100. typedef Cursor *CursPtr;
  101. typedef CursPtr *CursHandle;
  102. #if FOR_SYSTEM7_AND_SYSTEM8_COOPERATIVE
  103.  
  104. enum {
  105.     invalColReq                    = -1,                            /*invalid color table request*/
  106.                                                                 /* transfer modes */
  107.     srcCopy                        = 0,                            /*the 16 transfer modes*/
  108.     srcOr                        = 1,
  109.     srcXor                        = 2,
  110.     srcBic                        = 3,
  111.     notSrcCopy                    = 4,
  112.     notSrcOr                    = 5,
  113.     notSrcXor                    = 6,
  114.     notSrcBic                    = 7,
  115.     patCopy                        = 8,
  116.     patOr                        = 9,
  117.     patXor                        = 10,
  118.     patBic                        = 11,
  119.     notPatCopy                    = 12,
  120.     notPatOr                    = 13,
  121.     notPatXor                    = 14,
  122.     notPatBic                    = 15,                            /* Special Text Transfer Mode */
  123.     grayishTextOr                = 49,
  124.     hilitetransfermode            = 50,
  125.     hilite                        = 50,                            /* Arithmetic transfer modes */
  126.     blend                        = 32,
  127.     addPin                        = 33
  128. };
  129.  
  130.  
  131. enum {
  132.     addOver                        = 34,
  133.     subPin                        = 35,
  134.     addMax                        = 37,
  135.     adMax                        = 37,
  136.     subOver                        = 38,
  137.     adMin                        = 39,
  138.     ditherCopy                    = 64,                            /* Transparent mode constant */
  139.     transparent                    = 36,
  140.     italicBit                    = 1,
  141.     ulineBit                    = 2,
  142.     outlineBit                    = 3,
  143.     shadowBit                    = 4,
  144.     condenseBit                    = 5,
  145.     extendBit                    = 6,                            /* QuickDraw color separation constants */
  146.     normalBit                    = 0,                            /*normal screen mapping*/
  147.     inverseBit                    = 1,                            /*inverse screen mapping*/
  148.     redBit                        = 4,                            /*RGB additive mapping*/
  149.     greenBit                    = 3,
  150.     blueBit                        = 2,
  151.     cyanBit                        = 8,                            /*CMYBk subtractive mapping*/
  152.     magentaBit                    = 7,
  153.     yellowBit                    = 6,
  154.     blackBit                    = 5,
  155.     blackColor                    = 33,                            /*colors expressed in these mappings*/
  156.     whiteColor                    = 30,
  157.     redColor                    = 205
  158. };
  159.  
  160.  
  161. enum {
  162.     greenColor                    = 341,
  163.     blueColor                    = 409,
  164.     cyanColor                    = 273,
  165.     magentaColor                = 137,
  166.     yellowColor                    = 69,
  167.     picLParen                    = 0,                            /*standard picture comments*/
  168.     picRParen                    = 1,
  169.     clutType                    = 0,                            /*0 if lookup table*/
  170.     fixedType                    = 1,                            /*1 if fixed table*/
  171.     directType                    = 2,                            /*2 if direct values*/
  172.     gdDevType                    = 0                                /*0 = monochrome 1 = color*/
  173. };
  174.  
  175.  
  176. enum {
  177.     interlacedDevice            = 2,                            /* 1 if single pixel lines look bad */
  178.     roundedDevice                = 5,                            /* 1 if device has been ``rounded'' into the GrayRgn */
  179.     hasAuxMenuBar                = 6,                            /* 1 if device has an aux menu bar on it */
  180.     burstDevice                    = 7,
  181.     ext32Device                    = 8,
  182.     ramInit                        = 10,                            /*1 if initialized from 'scrn' resource*/
  183.     mainScreen                    = 11,                            /* 1 if main screen */
  184.     allInit                        = 12,                            /* 1 if all devices initialized */
  185.     screenDevice                = 13,                            /*1 if screen device [not used]*/
  186.     noDriver                    = 14,                            /* 1 if no driver for this GDevice */
  187.     screenActive                = 15,                            /*1 if in use*/
  188.     hiliteBit                    = 7,                            /*flag bit in HiliteMode (lowMem flag)*/
  189.     pHiliteBit                    = 0,                            /*flag bit in HiliteMode used with BitClr procedure*/
  190.     defQDColors                    = 127,                            /*resource ID of clut for default QDColors*/
  191.                                                                 /* pixel type */
  192.     RGBDirect                    = 16,                            /* 16 & 32 bits/pixel pixelType value */
  193.                                                                 /* pmVersion values */
  194.     baseAddr32                    = 4                                /*pixmap base address is 32-bit address*/
  195. };
  196.  
  197.  
  198. enum {
  199.     sysPatListID                = 0,
  200.     iBeamCursor                    = 1,
  201.     crossCursor                    = 2,
  202.     plusCursor                    = 3,
  203.     watchCursor                    = 4
  204. };
  205.  
  206.  
  207. enum {
  208.     kQDGrafVerbFrame            = 0,
  209.     kQDGrafVerbPaint            = 1,
  210.     kQDGrafVerbErase            = 2,
  211.     kQDGrafVerbInvert            = 3,
  212.     kQDGrafVerbFill                = 4
  213. };
  214.  
  215. #if OLDROUTINENAMES
  216.  
  217. enum {
  218.     frame                        = kQDGrafVerbFrame,
  219.     paint                        = kQDGrafVerbPaint,
  220.     erase                        = kQDGrafVerbErase,
  221.     invert                        = kQDGrafVerbInvert,
  222.     fill                        = kQDGrafVerbFill
  223. };
  224.  
  225. #endif
  226. typedef SInt8 GrafVerb;
  227.  
  228. enum {
  229.     chunky                        = 0,
  230.     chunkyPlanar                = 1,
  231.     planar                        = 2
  232. };
  233.  
  234. typedef SInt8 PixelType;
  235. /*
  236. **************   IMPORTANT NOTE REGARDING Pattern  **************************************
  237.    Patterns were originally defined as:
  238.    
  239.         C:             typedef unsigned char Pattern[8];
  240.         Pascal:        Pattern = PACKED ARRAY [0..7] OF 0..255;
  241.         
  242.    The old array defintion of Pattern would cause 68000 based CPU's to crash in certain circum-
  243.    stances. The new struct definition is safe, but may require source code changes to compile.
  244.    Read the details in TechNote "Platforms & Tools" #PT 38.
  245.     
  246. ********************************************************************************************
  247. */
  248. struct Pattern {
  249.     UInt8                             pat[8];
  250. };
  251. typedef struct Pattern Pattern;
  252.  
  253. /*
  254.  ConstPatternParam is now longer needed.  It was first created when Pattern was an array.
  255.  Now that Pattern is a struct, it is more straight forward just add the "const" qualifier
  256.  on the parameter type (e.g. "const Pattern * pat" instead of "ConstPatternParam pat").
  257. */
  258. typedef const Pattern *ConstPatternParam;
  259. typedef Pattern *PatPtr;
  260. typedef PatPtr *PatHandle;
  261. typedef SignedByte QDByte;
  262. typedef QDByte *QDPtr;
  263. typedef QDPtr *QDHandle;
  264. typedef short QDErr;
  265.  
  266. enum {
  267.     singleDevicesBit            = 0,
  268.     dontMatchSeedsBit            = 1,
  269.     allDevicesBit                = 2
  270. };
  271.  
  272.  
  273. enum {
  274.     singleDevices                = 1 << singleDevicesBit,
  275.     dontMatchSeeds                = 1 << dontMatchSeedsBit,
  276.     allDevices                    = 1 << allDevicesBit
  277. };
  278.  
  279. typedef unsigned long DeviceLoopFlags;
  280. struct BitMap {
  281.     Ptr                             baseAddr;
  282.     short                             rowBytes;
  283.     Rect                             bounds;
  284. };
  285. typedef struct BitMap BitMap;
  286.  
  287. typedef BitMap *BitMapPtr;
  288. typedef BitMapPtr *BitMapHandle;
  289. struct PenState {
  290.     Point                             pnLoc;
  291.     Point                             pnSize;
  292.     short                             pnMode;
  293.     Pattern                         pnPat;
  294. };
  295. typedef struct PenState PenState;
  296.  
  297. struct Region {
  298.     short                             rgnSize;                    /*size in bytes*/
  299.     Rect                             rgnBBox;                    /*enclosing rectangle*/
  300. };
  301. typedef struct Region Region;
  302.  
  303. typedef Region *RgnPtr;
  304. typedef RgnPtr *RgnHandle;
  305. struct Picture {
  306.     short                             picSize;
  307.     Rect                             picFrame;
  308. };
  309. typedef struct Picture Picture;
  310.  
  311. typedef Picture *PicPtr;
  312. typedef PicPtr *PicHandle;
  313. struct Polygon {
  314.     short                             polySize;
  315.     Rect                             polyBBox;
  316.     Point                             polyPoints[1];
  317. };
  318. typedef struct Polygon Polygon;
  319.  
  320. typedef Polygon *PolyPtr;
  321. typedef PolyPtr *PolyHandle;
  322. typedef pascal void (*QDTextProcPtr)(short byteCount, Ptr textBuf, Point numer, Point denom);
  323. typedef pascal void (*QDLineProcPtr)(Point newPt);
  324. typedef pascal void (*QDRectProcPtr)(GrafVerb verb, Rect *r);
  325. typedef pascal void (*QDRRectProcPtr)(GrafVerb verb, Rect *r, short ovalWidth, short ovalHeight);
  326. typedef pascal void (*QDOvalProcPtr)(GrafVerb verb, Rect *r);
  327. typedef pascal void (*QDArcProcPtr)(GrafVerb verb, Rect *r, short startAngle, short arcAngle);
  328. typedef pascal void (*QDPolyProcPtr)(GrafVerb verb, PolyHandle poly);
  329. typedef pascal void (*QDRgnProcPtr)(GrafVerb verb, RgnHandle rgn);
  330. typedef pascal void (*QDBitsProcPtr)(BitMap *srcBits, Rect *srcRect, Rect *dstRect, short mode, RgnHandle maskRgn);
  331. typedef pascal void (*QDCommentProcPtr)(short kind, short dataSize, Handle dataHandle);
  332. typedef pascal short (*QDTxMeasProcPtr)(short byteCount, Ptr textAddr, Point *numer, Point *denom, FontInfo *info);
  333. typedef pascal void (*QDGetPicProcPtr)(Ptr dataPtr, short byteCount);
  334. typedef pascal void (*QDPutPicProcPtr)(Ptr dataPtr, short byteCount);
  335. typedef pascal void (*QDOpcodeProcPtr)(Rect *fromRect, Rect *toRect, short opcode, short version);
  336. typedef pascal void (*QDJShieldCursorProcPtr)(short left, short top, short right, short bottom);
  337.  
  338. #if GENERATINGCFM
  339. typedef UniversalProcPtr QDTextUPP;
  340. typedef UniversalProcPtr QDLineUPP;
  341. typedef UniversalProcPtr QDRectUPP;
  342. typedef UniversalProcPtr QDRRectUPP;
  343. typedef UniversalProcPtr QDOvalUPP;
  344. typedef UniversalProcPtr QDArcUPP;
  345. typedef UniversalProcPtr QDPolyUPP;
  346. typedef UniversalProcPtr QDRgnUPP;
  347. typedef UniversalProcPtr QDBitsUPP;
  348. typedef UniversalProcPtr QDCommentUPP;
  349. typedef UniversalProcPtr QDTxMeasUPP;
  350. typedef UniversalProcPtr QDGetPicUPP;
  351. typedef UniversalProcPtr QDPutPicUPP;
  352. typedef UniversalProcPtr QDOpcodeUPP;
  353. typedef UniversalProcPtr QDJShieldCursorUPP;
  354. #else
  355. typedef QDTextProcPtr QDTextUPP;
  356. typedef QDLineProcPtr QDLineUPP;
  357. typedef QDRectProcPtr QDRectUPP;
  358. typedef QDRRectProcPtr QDRRectUPP;
  359. typedef QDOvalProcPtr QDOvalUPP;
  360. typedef QDArcProcPtr QDArcUPP;
  361. typedef QDPolyProcPtr QDPolyUPP;
  362. typedef QDRgnProcPtr QDRgnUPP;
  363. typedef QDBitsProcPtr QDBitsUPP;
  364. typedef QDCommentProcPtr QDCommentUPP;
  365. typedef QDTxMeasProcPtr QDTxMeasUPP;
  366. typedef QDGetPicProcPtr QDGetPicUPP;
  367. typedef QDPutPicProcPtr QDPutPicUPP;
  368. typedef QDOpcodeProcPtr QDOpcodeUPP;
  369. typedef QDJShieldCursorProcPtr QDJShieldCursorUPP;
  370. #endif
  371. struct QDProcs {
  372.     QDTextUPP                         textProc;
  373.     QDLineUPP                         lineProc;
  374.     QDRectUPP                         rectProc;
  375.     QDRRectUPP                         rRectProc;
  376.     QDOvalUPP                         ovalProc;
  377.     QDArcUPP                         arcProc;
  378.     QDPolyUPP                         polyProc;
  379.     QDRgnUPP                         rgnProc;
  380.     QDBitsUPP                         bitsProc;
  381.     QDCommentUPP                     commentProc;
  382.     QDTxMeasUPP                     txMeasProc;
  383.     QDGetPicUPP                     getPicProc;
  384.     QDPutPicUPP                     putPicProc;
  385. };
  386. typedef struct QDProcs QDProcs;
  387.  
  388. typedef QDProcs *QDProcsPtr;
  389.  
  390. enum {
  391.     uppQDTextProcInfo = kPascalStackBased
  392.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(short)))
  393.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Ptr)))
  394.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(Point)))
  395.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(Point))),
  396.     uppQDLineProcInfo = kPascalStackBased
  397.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Point))),
  398.     uppQDRectProcInfo = kPascalStackBased
  399.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(GrafVerb)))
  400.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Rect *))),
  401.     uppQDRRectProcInfo = kPascalStackBased
  402.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(GrafVerb)))
  403.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Rect *)))
  404.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(short)))
  405.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(short))),
  406.     uppQDOvalProcInfo = kPascalStackBased
  407.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(GrafVerb)))
  408.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Rect *))),
  409.     uppQDArcProcInfo = kPascalStackBased
  410.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(GrafVerb)))
  411.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Rect *)))
  412.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(short)))
  413.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(short))),
  414.     uppQDPolyProcInfo = kPascalStackBased
  415.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(GrafVerb)))
  416.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(PolyHandle))),
  417.     uppQDRgnProcInfo = kPascalStackBased
  418.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(GrafVerb)))
  419.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(RgnHandle))),
  420.     uppQDBitsProcInfo = kPascalStackBased
  421.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(BitMap *)))
  422.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Rect *)))
  423.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(Rect *)))
  424.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(short)))
  425.          | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(RgnHandle))),
  426.     uppQDCommentProcInfo = kPascalStackBased
  427.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(short)))
  428.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short)))
  429.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(Handle))),
  430.     uppQDTxMeasProcInfo = kPascalStackBased
  431.          | RESULT_SIZE(SIZE_CODE(sizeof(short)))
  432.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(short)))
  433.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Ptr)))
  434.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(Point *)))
  435.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(Point *)))
  436.          | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(FontInfo *))),
  437.     uppQDGetPicProcInfo = kPascalStackBased
  438.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Ptr)))
  439.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short))),
  440.     uppQDPutPicProcInfo = kPascalStackBased
  441.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Ptr)))
  442.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short))),
  443.     uppQDOpcodeProcInfo = kPascalStackBased
  444.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Rect *)))
  445.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Rect *)))
  446.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(short)))
  447.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(short))),
  448.     uppQDJShieldCursorProcInfo = kPascalStackBased
  449.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(short)))
  450.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short)))
  451.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(short)))
  452.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(short)))
  453. };
  454.  
  455. #if GENERATINGCFM
  456. #define NewQDTextProc(userRoutine)        \
  457.         (QDTextUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDTextProcInfo, GetCurrentArchitecture())
  458. #define NewQDLineProc(userRoutine)        \
  459.         (QDLineUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDLineProcInfo, GetCurrentArchitecture())
  460. #define NewQDRectProc(userRoutine)        \
  461.         (QDRectUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDRectProcInfo, GetCurrentArchitecture())
  462. #define NewQDRRectProc(userRoutine)        \
  463.         (QDRRectUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDRRectProcInfo, GetCurrentArchitecture())
  464. #define NewQDOvalProc(userRoutine)        \
  465.         (QDOvalUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDOvalProcInfo, GetCurrentArchitecture())
  466. #define NewQDArcProc(userRoutine)        \
  467.         (QDArcUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDArcProcInfo, GetCurrentArchitecture())
  468. #define NewQDPolyProc(userRoutine)        \
  469.         (QDPolyUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDPolyProcInfo, GetCurrentArchitecture())
  470. #define NewQDRgnProc(userRoutine)        \
  471.         (QDRgnUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDRgnProcInfo, GetCurrentArchitecture())
  472. #define NewQDBitsProc(userRoutine)        \
  473.         (QDBitsUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDBitsProcInfo, GetCurrentArchitecture())
  474. #define NewQDCommentProc(userRoutine)        \
  475.         (QDCommentUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDCommentProcInfo, GetCurrentArchitecture())
  476. #define NewQDTxMeasProc(userRoutine)        \
  477.         (QDTxMeasUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDTxMeasProcInfo, GetCurrentArchitecture())
  478. #define NewQDGetPicProc(userRoutine)        \
  479.         (QDGetPicUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDGetPicProcInfo, GetCurrentArchitecture())
  480. #define NewQDPutPicProc(userRoutine)        \
  481.         (QDPutPicUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDPutPicProcInfo, GetCurrentArchitecture())
  482. #define NewQDOpcodeProc(userRoutine)        \
  483.         (QDOpcodeUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDOpcodeProcInfo, GetCurrentArchitecture())
  484. #define NewQDJShieldCursorProc(userRoutine)        \
  485.         (QDJShieldCursorUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDJShieldCursorProcInfo, GetCurrentArchitecture())
  486. #else
  487. #define NewQDTextProc(userRoutine)        \
  488.         ((QDTextUPP) (userRoutine))
  489. #define NewQDLineProc(userRoutine)        \
  490.         ((QDLineUPP) (userRoutine))
  491. #define NewQDRectProc(userRoutine)        \
  492.         ((QDRectUPP) (userRoutine))
  493. #define NewQDRRectProc(userRoutine)        \
  494.         ((QDRRectUPP) (userRoutine))
  495. #define NewQDOvalProc(userRoutine)        \
  496.         ((QDOvalUPP) (userRoutine))
  497. #define NewQDArcProc(userRoutine)        \
  498.         ((QDArcUPP) (userRoutine))
  499. #define NewQDPolyProc(userRoutine)        \
  500.         ((QDPolyUPP) (userRoutine))
  501. #define NewQDRgnProc(userRoutine)        \
  502.         ((QDRgnUPP) (userRoutine))
  503. #define NewQDBitsProc(userRoutine)        \
  504.         ((QDBitsUPP) (userRoutine))
  505. #define NewQDCommentProc(userRoutine)        \
  506.         ((QDCommentUPP) (userRoutine))
  507. #define NewQDTxMeasProc(userRoutine)        \
  508.         ((QDTxMeasUPP) (userRoutine))
  509. #define NewQDGetPicProc(userRoutine)        \
  510.         ((QDGetPicUPP) (userRoutine))
  511. #define NewQDPutPicProc(userRoutine)        \
  512.         ((QDPutPicUPP) (userRoutine))
  513. #define NewQDOpcodeProc(userRoutine)        \
  514.         ((QDOpcodeUPP) (userRoutine))
  515. #define NewQDJShieldCursorProc(userRoutine)        \
  516.         ((QDJShieldCursorUPP) (userRoutine))
  517. #endif
  518.  
  519. #if GENERATINGCFM
  520. #define CallQDTextProc(userRoutine, byteCount, textBuf, numer, denom)        \
  521.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQDTextProcInfo, (byteCount), (textBuf), (numer), (denom))
  522. #define CallQDLineProc(userRoutine, newPt)        \
  523.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQDLineProcInfo, (newPt))
  524. #define CallQDRectProc(userRoutine, verb, r)        \
  525.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQDRectProcInfo, (verb), (r))
  526. #define CallQDRRectProc(userRoutine, verb, r, ovalWidth, ovalHeight)        \
  527.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQDRRectProcInfo, (verb), (r), (ovalWidth), (ovalHeight))
  528. #define CallQDOvalProc(userRoutine, verb, r)        \
  529.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQDOvalProcInfo, (verb), (r))
  530. #define CallQDArcProc(userRoutine, verb, r, startAngle, arcAngle)        \
  531.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQDArcProcInfo, (verb), (r), (startAngle), (arcAngle))
  532. #define CallQDPolyProc(userRoutine, verb, poly)        \
  533.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQDPolyProcInfo, (verb), (poly))
  534. #define CallQDRgnProc(userRoutine, verb, rgn)        \
  535.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQDRgnProcInfo, (verb), (rgn))
  536. #define CallQDBitsProc(userRoutine, srcBits, srcRect, dstRect, mode, maskRgn)        \
  537.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQDBitsProcInfo, (srcBits), (srcRect), (dstRect), (mode), (maskRgn))
  538. #define CallQDCommentProc(userRoutine, kind, dataSize, dataHandle)        \
  539.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQDCommentProcInfo, (kind), (dataSize), (dataHandle))
  540. #define CallQDTxMeasProc(userRoutine, byteCount, textAddr, numer, denom, info)        \
  541.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQDTxMeasProcInfo, (byteCount), (textAddr), (numer), (denom), (info))
  542. #define CallQDGetPicProc(userRoutine, dataPtr, byteCount)        \
  543.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQDGetPicProcInfo, (dataPtr), (byteCount))
  544. #define CallQDPutPicProc(userRoutine, dataPtr, byteCount)        \
  545.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQDPutPicProcInfo, (dataPtr), (byteCount))
  546. #define CallQDOpcodeProc(userRoutine, fromRect, toRect, opcode, version)        \
  547.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQDOpcodeProcInfo, (fromRect), (toRect), (opcode), (version))
  548. #define CallQDJShieldCursorProc(userRoutine, left, top, right, bottom)        \
  549.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQDJShieldCursorProcInfo, (left), (top), (right), (bottom))
  550. #else
  551. #define CallQDTextProc(userRoutine, byteCount, textBuf, numer, denom)        \
  552.         (*(userRoutine))((byteCount), (textBuf), (numer), (denom))
  553. #define CallQDLineProc(userRoutine, newPt)        \
  554.         (*(userRoutine))((newPt))
  555. #define CallQDRectProc(userRoutine, verb, r)        \
  556.         (*(userRoutine))((verb), (r))
  557. #define CallQDRRectProc(userRoutine, verb, r, ovalWidth, ovalHeight)        \
  558.         (*(userRoutine))((verb), (r), (ovalWidth), (ovalHeight))
  559. #define CallQDOvalProc(userRoutine, verb, r)        \
  560.         (*(userRoutine))((verb), (r))
  561. #define CallQDArcProc(userRoutine, verb, r, startAngle, arcAngle)        \
  562.         (*(userRoutine))((verb), (r), (startAngle), (arcAngle))
  563. #define CallQDPolyProc(userRoutine, verb, poly)        \
  564.         (*(userRoutine))((verb), (poly))
  565. #define CallQDRgnProc(userRoutine, verb, rgn)        \
  566.         (*(userRoutine))((verb), (rgn))
  567. #define CallQDBitsProc(userRoutine, srcBits, srcRect, dstRect, mode, maskRgn)        \
  568.         (*(userRoutine))((srcBits), (srcRect), (dstRect), (mode), (maskRgn))
  569. #define CallQDCommentProc(userRoutine, kind, dataSize, dataHandle)        \
  570.         (*(userRoutine))((kind), (dataSize), (dataHandle))
  571. #define CallQDTxMeasProc(userRoutine, byteCount, textAddr, numer, denom, info)        \
  572.         (*(userRoutine))((byteCount), (textAddr), (numer), (denom), (info))
  573. #define CallQDGetPicProc(userRoutine, dataPtr, byteCount)        \
  574.         (*(userRoutine))((dataPtr), (byteCount))
  575. #define CallQDPutPicProc(userRoutine, dataPtr, byteCount)        \
  576.         (*(userRoutine))((dataPtr), (byteCount))
  577. #define CallQDOpcodeProc(userRoutine, fromRect, toRect, opcode, version)        \
  578.         (*(userRoutine))((fromRect), (toRect), (opcode), (version))
  579. #define CallQDJShieldCursorProc(userRoutine, left, top, right, bottom)        \
  580.         (*(userRoutine))((left), (top), (right), (bottom))
  581. #endif
  582. struct GrafPort {
  583.     short                             device;
  584.     BitMap                             portBits;
  585.     Rect                             portRect;
  586.     RgnHandle                         visRgn;
  587.     RgnHandle                         clipRgn;
  588.     Pattern                         bkPat;
  589.     Pattern                         fillPat;
  590.     Point                             pnLoc;
  591.     Point                             pnSize;
  592.     short                             pnMode;
  593.     Pattern                         pnPat;
  594.     short                             pnVis;
  595.     short                             txFont;
  596.     StyleField                         txFace;                        /*StyleField occupies 16-bits, but only first 8-bits are used*/
  597.     short                             txMode;
  598.     short                             txSize;
  599.     Fixed                             spExtra;
  600.     long                             fgColor;
  601.     long                             bkColor;
  602.     short                             colrBit;
  603.     short                             patStretch;
  604.     Handle                             picSave;
  605.     Handle                             rgnSave;
  606.     Handle                             polySave;
  607.     QDProcsPtr                         grafProcs;
  608. };
  609. typedef struct GrafPort GrafPort;
  610.  
  611. typedef GrafPort *GrafPtr;
  612. /*
  613.  *    This set of definitions "belongs" in Windows.
  614.  *    But, there is a circularity in the headers where Windows includes Controls and
  615.  *    Controls includes Windows. To break the circle, the information
  616.  *    needed by Controls is moved from Windows to Quickdraw.
  617. */
  618. typedef GrafPtr WindowPtr;
  619. typedef WindowPtr WindowRef;
  620. typedef WindowPtr DialogPtr;
  621. /* DragConstraint constants to pass to DragGray,DragTheRgn, or ConstrainedDragRgn*/
  622. typedef UInt16 DragConstraint;
  623.  
  624. enum {
  625.     kNoConstraint                = 0,
  626.     kVerticalConstraint            = 1,
  627.     kHorizontalConstraint        = 2
  628. };
  629.  
  630. typedef pascal void (*DragGrayRgnProcPtr)(void );
  631. /*
  632.  *    Here ends the list of things that "belong" in Windows.
  633. */
  634. typedef pascal Boolean (*ColorSearchProcPtr)(RGBColor *rgb, long *position);
  635. typedef pascal Boolean (*ColorComplementProcPtr)(RGBColor *rgb);
  636.  
  637. #if GENERATINGCFM
  638. typedef UniversalProcPtr DragGrayRgnUPP;
  639. typedef UniversalProcPtr ColorSearchUPP;
  640. typedef UniversalProcPtr ColorComplementUPP;
  641. #else
  642. typedef DragGrayRgnProcPtr DragGrayRgnUPP;
  643. typedef ColorSearchProcPtr ColorSearchUPP;
  644. typedef ColorComplementProcPtr ColorComplementUPP;
  645. #endif
  646.  
  647. enum {
  648.     uppDragGrayRgnProcInfo = kPascalStackBased,
  649.     uppColorSearchProcInfo = kPascalStackBased
  650.          | RESULT_SIZE(SIZE_CODE(sizeof(Boolean)))
  651.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(RGBColor *)))
  652.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long *))),
  653.     uppColorComplementProcInfo = kPascalStackBased
  654.          | RESULT_SIZE(SIZE_CODE(sizeof(Boolean)))
  655.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(RGBColor *)))
  656. };
  657.  
  658. #if GENERATINGCFM
  659. #define NewDragGrayRgnProc(userRoutine)        \
  660.         (DragGrayRgnUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppDragGrayRgnProcInfo, GetCurrentArchitecture())
  661. #define NewColorSearchProc(userRoutine)        \
  662.         (ColorSearchUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppColorSearchProcInfo, GetCurrentArchitecture())
  663. #define NewColorComplementProc(userRoutine)        \
  664.         (ColorComplementUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppColorComplementProcInfo, GetCurrentArchitecture())
  665. #else
  666. #define NewDragGrayRgnProc(userRoutine)        \
  667.         ((DragGrayRgnUPP) (userRoutine))
  668. #define NewColorSearchProc(userRoutine)        \
  669.         ((ColorSearchUPP) (userRoutine))
  670. #define NewColorComplementProc(userRoutine)        \
  671.         ((ColorComplementUPP) (userRoutine))
  672. #endif
  673.  
  674. #if GENERATINGCFM
  675. #define CallDragGrayRgnProc(userRoutine)        \
  676.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppDragGrayRgnProcInfo)
  677. #define CallColorSearchProc(userRoutine, rgb, position)        \
  678.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppColorSearchProcInfo, (rgb), (position))
  679. #define CallColorComplementProc(userRoutine, rgb)        \
  680.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppColorComplementProcInfo, (rgb))
  681. #else
  682. #define CallDragGrayRgnProc(userRoutine)        \
  683.         (*(userRoutine))()
  684. #define CallColorSearchProc(userRoutine, rgb, position)        \
  685.         (*(userRoutine))((rgb), (position))
  686. #define CallColorComplementProc(userRoutine, rgb)        \
  687.         (*(userRoutine))((rgb))
  688. #endif
  689. struct MatchRec {
  690.     unsigned short                     red;
  691.     unsigned short                     green;
  692.     unsigned short                     blue;
  693.     long                             matchData;
  694. };
  695. typedef struct MatchRec MatchRec;
  696.  
  697. struct PixMap {
  698.     Ptr                             baseAddr;                    /*pointer to pixels*/
  699.     short                             rowBytes;                    /*offset to next line*/
  700.     Rect                             bounds;                        /*encloses bitmap*/
  701.     short                             pmVersion;                    /*pixMap version number*/
  702.     short                             packType;                    /*defines packing format*/
  703.     long                             packSize;                    /*length of pixel data*/
  704.     Fixed                             hRes;                        /*horiz. resolution (ppi)*/
  705.     Fixed                             vRes;                        /*vert. resolution (ppi)*/
  706.     short                             pixelType;                    /*defines pixel type*/
  707.     short                             pixelSize;                    /*# bits in pixel*/
  708.     short                             cmpCount;                    /*# components in pixel*/
  709.     short                             cmpSize;                    /*# bits per component*/
  710.     long                             planeBytes;                    /*offset to next plane*/
  711.     CTabHandle                         pmTable;                    /*color map for this pixMap*/
  712.     long                             pmReserved;                    /*for future use. MUST BE 0*/
  713. };
  714. typedef struct PixMap PixMap;
  715.  
  716. typedef PixMap *PixMapPtr;
  717. typedef PixMapPtr *PixMapHandle;
  718. struct PixPat {
  719.     short                             patType;                    /*type of pattern*/
  720.     PixMapHandle                     patMap;                        /*the pattern's pixMap*/
  721.     Handle                             patData;                    /*pixmap's data*/
  722.     Handle                             patXData;                    /*expanded Pattern data*/
  723.     short                             patXValid;                    /*flags whether expanded Pattern valid*/
  724.     Handle                             patXMap;                    /*Handle to expanded Pattern data*/
  725.     Pattern                         pat1Data;                    /*old-Style pattern/RGB color*/
  726. };
  727. typedef struct PixPat PixPat;
  728.  
  729. typedef PixPat *PixPatPtr;
  730. typedef PixPatPtr *PixPatHandle;
  731. struct CCrsr {
  732.     short                             crsrType;                    /*type of cursor*/
  733.     PixMapHandle                     crsrMap;                    /*the cursor's pixmap*/
  734.     Handle                             crsrData;                    /*cursor's data*/
  735.     Handle                             crsrXData;                    /*expanded cursor data*/
  736.     short                             crsrXValid;                    /*depth of expanded data (0 if none)*/
  737.     Handle                             crsrXHandle;                /*future use*/
  738.     Bits16                             crsr1Data;                    /*one-bit cursor*/
  739.     Bits16                             crsrMask;                    /*cursor's mask*/
  740.     Point                             crsrHotSpot;                /*cursor's hotspot*/
  741.     long                             crsrXTable;                    /*private*/
  742.     long                             crsrID;                        /*private*/
  743. };
  744. typedef struct CCrsr CCrsr;
  745.  
  746. typedef CCrsr *CCrsrPtr;
  747. typedef CCrsrPtr *CCrsrHandle;
  748. #if OLDROUTINELOCATIONS
  749. struct CIcon {
  750.     PixMap                             iconPMap;                    /*the icon's pixMap*/
  751.     BitMap                             iconMask;                    /*the icon's mask*/
  752.     BitMap                             iconBMap;                    /*the icon's bitMap*/
  753.     Handle                             iconData;                    /*the icon's data*/
  754.     short                             iconMaskData[1];            /*icon's mask and BitMap data*/
  755. };
  756. typedef struct CIcon CIcon;
  757.  
  758. typedef CIcon *CIconPtr;
  759. typedef CIconPtr *CIconHandle;
  760. #endif
  761. struct ITab {
  762.     long                             iTabSeed;                    /*copy of CTSeed from source CTable*/
  763.     short                             iTabRes;                    /*bits/channel resolution of iTable*/
  764.     Byte                             iTTable[1];                    /*byte colortable index values*/
  765. };
  766. typedef struct ITab ITab;
  767.  
  768. typedef ITab *ITabPtr;
  769. typedef ITabPtr *ITabHandle;
  770. struct SProcRec {
  771.     Handle                             nxtSrch;                    /*SProcHndl Handle to next SProcRec*/
  772.     ColorSearchUPP                     srchProc;                    /*search procedure proc ptr*/
  773. };
  774. typedef struct SProcRec SProcRec;
  775.  
  776. typedef SProcRec *SProcPtr;
  777. typedef SProcPtr *SProcHndl;
  778. struct CProcRec {
  779.     Handle                             nxtComp;                    /*CProcHndl Handle to next CProcRec*/
  780.     ColorComplementUPP                 compProc;                    /*complement procedure proc ptr*/
  781. };
  782. typedef struct CProcRec CProcRec;
  783.  
  784. typedef CProcRec *CProcPtr;
  785. typedef CProcPtr *CProcHndl;
  786. struct GDevice {
  787.     short                             gdRefNum;                    /*driver's unit number*/
  788.     short                             gdID;                        /*client ID for search procs*/
  789.     short                             gdType;                        /*fixed/CLUT/direct*/
  790.     ITabHandle                         gdITable;                    /*Handle to inverse lookup table*/
  791.     short                             gdResPref;                    /*preferred resolution of GDITable*/
  792.     SProcHndl                         gdSearchProc;                /*search proc list head*/
  793.     CProcHndl                         gdCompProc;                    /*complement proc list*/
  794.     short                             gdFlags;                    /*grafDevice flags word*/
  795.     PixMapHandle                     gdPMap;                        /*describing pixMap*/
  796.     long                             gdRefCon;                    /*reference value*/
  797.     Handle                             gdNextGD;                    /*GDHandle Handle of next gDevice*/
  798.     Rect                             gdRect;                        /* device's bounds in global coordinates*/
  799.     long                             gdMode;                        /*device's current mode*/
  800.     short                             gdCCBytes;                    /*depth of expanded cursor data*/
  801.     short                             gdCCDepth;                    /*depth of expanded cursor data*/
  802.     Handle                             gdCCXData;                    /*Handle to cursor's expanded data*/
  803.     Handle                             gdCCXMask;                    /*Handle to cursor's expanded mask*/
  804.     long                             gdReserved;                    /*future use. MUST BE 0*/
  805. };
  806. typedef struct GDevice GDevice;
  807.  
  808. typedef GDevice *GDPtr;
  809. typedef GDPtr *GDHandle;
  810. struct GrafVars {
  811.     RGBColor                         rgbOpColor;                    /*color for addPin  subPin and average*/
  812.     RGBColor                         rgbHiliteColor;                /*color for hiliting*/
  813.     Handle                             pmFgColor;                    /*palette Handle for foreground color*/
  814.     short                             pmFgIndex;                    /*index value for foreground*/
  815.     Handle                             pmBkColor;                    /*palette Handle for background color*/
  816.     short                             pmBkIndex;                    /*index value for background*/
  817.     short                             pmFlags;                    /*flags for Palette Manager*/
  818. };
  819. typedef struct GrafVars GrafVars;
  820.  
  821. typedef GrafVars *GVarPtr;
  822. typedef GVarPtr *GVarHandle;
  823. struct CQDProcs {
  824.     QDTextUPP                         textProc;
  825.     QDLineUPP                         lineProc;
  826.     QDRectUPP                         rectProc;
  827.     QDRRectUPP                         rRectProc;
  828.     QDOvalUPP                         ovalProc;
  829.     QDArcUPP                         arcProc;
  830.     QDPolyUPP                         polyProc;
  831.     QDRgnUPP                         rgnProc;
  832.     QDBitsUPP                         bitsProc;
  833.     QDCommentUPP                     commentProc;
  834.     QDTxMeasUPP                     txMeasProc;
  835.     QDGetPicUPP                     getPicProc;
  836.     QDPutPicUPP                     putPicProc;
  837.     QDOpcodeUPP                     opcodeProc;                    /*fields added to QDProcs*/
  838.     UniversalProcPtr                 newProc1;
  839.     UniversalProcPtr                 newProc2;
  840.     UniversalProcPtr                 newProc3;
  841.     UniversalProcPtr                 newProc4;
  842.     UniversalProcPtr                 newProc5;
  843.     UniversalProcPtr                 newProc6;
  844. };
  845. typedef struct CQDProcs CQDProcs;
  846.  
  847. typedef CQDProcs *CQDProcsPtr;
  848. struct CGrafPort {
  849.     short                             device;
  850.     PixMapHandle                     portPixMap;                    /*port's pixel map*/
  851.     short                             portVersion;                /*high 2 bits always set*/
  852.     Handle                             grafVars;                    /*Handle to more fields*/
  853.     short                             chExtra;                    /*character extra*/
  854.     short                             pnLocHFrac;                    /*pen fraction*/
  855.     Rect                             portRect;
  856.     RgnHandle                         visRgn;
  857.     RgnHandle                         clipRgn;
  858.     PixPatHandle                     bkPixPat;                    /*background pattern*/
  859.     RGBColor                         rgbFgColor;                    /*RGB components of fg*/
  860.     RGBColor                         rgbBkColor;                    /*RGB components of bk*/
  861.     Point                             pnLoc;
  862.     Point                             pnSize;
  863.     short                             pnMode;
  864.     PixPatHandle                     pnPixPat;                    /*pen's pattern*/
  865.     PixPatHandle                     fillPixPat;                    /*fill pattern*/
  866.     short                             pnVis;
  867.     short                             txFont;
  868.     StyleField                         txFace;                        /*StyleField occupies 16-bits, but only first 8-bits are used*/
  869.     short                             txMode;
  870.     short                             txSize;
  871.     Fixed                             spExtra;
  872.     long                             fgColor;
  873.     long                             bkColor;
  874.     short                             colrBit;
  875.     short                             patStretch;
  876.     Handle                             picSave;
  877.     Handle                             rgnSave;
  878.     Handle                             polySave;
  879.     CQDProcsPtr                     grafProcs;
  880. };
  881. typedef struct CGrafPort CGrafPort;
  882.  
  883. typedef CGrafPort *CGrafPtr;
  884. typedef CGrafPtr CWindowPtr;
  885. struct ReqListRec {
  886.     short                             reqLSize;                    /*request list size*/
  887.     short                             reqLData[1];                /*request list data*/
  888. };
  889. typedef struct ReqListRec ReqListRec;
  890.  
  891. struct OpenCPicParams {
  892.     Rect                             srcRect;
  893.     Fixed                             hRes;
  894.     Fixed                             vRes;
  895.     short                             version;
  896.     short                             reserved1;
  897.     long                             reserved2;
  898. };
  899. typedef struct OpenCPicParams OpenCPicParams;
  900.  
  901.  
  902. enum {
  903.     kCursorImageMajorVersion    = 0x0001,
  904.     kCursorImageMinorVersion    = 0x0000
  905. };
  906.  
  907. struct CursorImageRec {
  908.     UInt16                             majorVersion;
  909.     UInt16                             minorVersion;
  910.     PixMapHandle                     cursorPixMap;
  911.     BitMapHandle                     cursorBitMask;
  912. };
  913. typedef struct CursorImageRec CursorImageRec;
  914.  
  915. typedef CursorImageRec *CursorImagePtr;
  916. typedef pascal void (*DeviceLoopDrawingProcPtr)(short depth, short deviceFlags, GDHandle targetDevice, long userData);
  917.  
  918. #if GENERATINGCFM
  919. typedef UniversalProcPtr DeviceLoopDrawingUPP;
  920. #else
  921. typedef DeviceLoopDrawingProcPtr DeviceLoopDrawingUPP;
  922. #endif
  923.  
  924. enum {
  925.     uppDeviceLoopDrawingProcInfo = kPascalStackBased
  926.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(short)))
  927.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short)))
  928.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(GDHandle)))
  929.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(long)))
  930. };
  931.  
  932. #if GENERATINGCFM
  933. #define NewDeviceLoopDrawingProc(userRoutine)        \
  934.         (DeviceLoopDrawingUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppDeviceLoopDrawingProcInfo, GetCurrentArchitecture())
  935. #else
  936. #define NewDeviceLoopDrawingProc(userRoutine)        \
  937.         ((DeviceLoopDrawingUPP) (userRoutine))
  938. #endif
  939.  
  940. #if GENERATINGCFM
  941. #define CallDeviceLoopDrawingProc(userRoutine, depth, deviceFlags, targetDevice, userData)        \
  942.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppDeviceLoopDrawingProcInfo, (depth), (deviceFlags), (targetDevice), (userData))
  943. #else
  944. #define CallDeviceLoopDrawingProc(userRoutine, depth, deviceFlags, targetDevice, userData)        \
  945.         (*(userRoutine))((depth), (deviceFlags), (targetDevice), (userData))
  946. #endif
  947. #if FOR_SYSTEM8_COOPERATIVE
  948. typedef DeviceLoopDrawingProcPtr NativeDeviceLoopDrawingProcPtr;
  949. #endif
  950. struct QDGlobals {
  951.     char                             privates[76];
  952.     long                             randSeed;
  953.     BitMap                             screenBits;
  954.     Cursor                             arrow;
  955.     Pattern                         dkGray;
  956.     Pattern                         ltGray;
  957.     Pattern                         gray;
  958.     Pattern                         black;
  959.     Pattern                         white;
  960.     GrafPtr                         thePort;
  961. };
  962. typedef struct QDGlobals QDGlobals;
  963.  
  964. typedef QDGlobals *QDGlobalsPtr;
  965. typedef QDGlobalsPtr *QDGlobalsHdl;
  966. extern QDGlobals qd;
  967.  
  968. extern pascal void InitGraf(void *globalPtr)
  969.  ONEWORDINLINE(0xA86E);
  970.  
  971. extern pascal void OpenPort(GrafPtr port)
  972.  ONEWORDINLINE(0xA86F);
  973.  
  974. extern pascal void InitPort(GrafPtr port)
  975.  ONEWORDINLINE(0xA86D);
  976.  
  977. extern pascal void ClosePort(GrafPtr port)
  978.  ONEWORDINLINE(0xA87D);
  979.  
  980. extern pascal void SetPort(GrafPtr port)
  981.  ONEWORDINLINE(0xA873);
  982.  
  983. extern pascal void GetPort(GrafPtr *port)
  984.  ONEWORDINLINE(0xA874);
  985.  
  986. extern pascal void GrafDevice(short device)
  987.  ONEWORDINLINE(0xA872);
  988.  
  989. extern pascal void SetPortBits(const BitMap *bm)
  990.  ONEWORDINLINE(0xA875);
  991.  
  992. extern pascal void PortSize(short width, short height)
  993.  ONEWORDINLINE(0xA876);
  994.  
  995. extern pascal void MovePortTo(short leftGlobal, short topGlobal)
  996.  ONEWORDINLINE(0xA877);
  997.  
  998. extern pascal void SetOrigin(short h, short v)
  999.  ONEWORDINLINE(0xA878);
  1000.  
  1001. extern pascal void SetClip(RgnHandle rgn)
  1002.  ONEWORDINLINE(0xA879);
  1003.  
  1004. extern pascal void GetClip(RgnHandle rgn)
  1005.  ONEWORDINLINE(0xA87A);
  1006.  
  1007. extern pascal void ClipRect(const Rect *r)
  1008.  ONEWORDINLINE(0xA87B);
  1009.  
  1010. extern pascal void BackPat(const Pattern *pat)
  1011.  ONEWORDINLINE(0xA87C);
  1012.  
  1013. extern pascal void InitCursor(void )
  1014.  ONEWORDINLINE(0xA850);
  1015.  
  1016. extern pascal void SetCursor(const Cursor *crsr)
  1017.  ONEWORDINLINE(0xA851);
  1018.  
  1019. extern pascal void HideCursor(void )
  1020.  ONEWORDINLINE(0xA852);
  1021.  
  1022. extern pascal void ShowCursor(void )
  1023.  ONEWORDINLINE(0xA853);
  1024.  
  1025. extern pascal void ObscureCursor(void )
  1026.  ONEWORDINLINE(0xA856);
  1027.  
  1028. extern pascal void HidePen(void )
  1029.  ONEWORDINLINE(0xA896);
  1030.  
  1031. extern pascal void ShowPen(void )
  1032.  ONEWORDINLINE(0xA897);
  1033.  
  1034. extern pascal void GetPen(Point *pt)
  1035.  ONEWORDINLINE(0xA89A);
  1036.  
  1037. extern pascal void GetPenState(PenState *pnState)
  1038.  ONEWORDINLINE(0xA898);
  1039.  
  1040. extern pascal void SetPenState(const PenState *pnState)
  1041.  ONEWORDINLINE(0xA899);
  1042.  
  1043. extern pascal void PenSize(short width, short height)
  1044.  ONEWORDINLINE(0xA89B);
  1045.  
  1046. extern pascal void PenMode(short mode)
  1047.  ONEWORDINLINE(0xA89C);
  1048.  
  1049. extern pascal void PenPat(const Pattern *pat)
  1050.  ONEWORDINLINE(0xA89D);
  1051.  
  1052. extern pascal void PenNormal(void )
  1053.  ONEWORDINLINE(0xA89E);
  1054.  
  1055. extern pascal void MoveTo(short h, short v)
  1056.  ONEWORDINLINE(0xA893);
  1057.  
  1058. extern pascal void Move(short dh, short dv)
  1059.  ONEWORDINLINE(0xA894);
  1060.  
  1061. extern pascal void LineTo(short h, short v)
  1062.  ONEWORDINLINE(0xA891);
  1063.  
  1064. extern pascal void Line(short dh, short dv)
  1065.  ONEWORDINLINE(0xA892);
  1066.  
  1067. extern pascal void ForeColor(long color)
  1068.  ONEWORDINLINE(0xA862);
  1069.  
  1070. extern pascal void BackColor(long color)
  1071.  ONEWORDINLINE(0xA863);
  1072.  
  1073. extern pascal void ColorBit(short whichBit)
  1074.  ONEWORDINLINE(0xA864);
  1075.  
  1076. extern pascal void SetRect(Rect *r, short left, short top, short right, short bottom)
  1077.  ONEWORDINLINE(0xA8A7);
  1078.  
  1079. extern pascal void OffsetRect(Rect *r, short dh, short dv)
  1080.  ONEWORDINLINE(0xA8A8);
  1081.  
  1082. extern pascal void InsetRect(Rect *r, short dh, short dv)
  1083.  ONEWORDINLINE(0xA8A9);
  1084.  
  1085. extern pascal Boolean SectRect(const Rect *src1, const Rect *src2, Rect *dstRect)
  1086.  ONEWORDINLINE(0xA8AA);
  1087.  
  1088. extern pascal void UnionRect(const Rect *src1, const Rect *src2, Rect *dstRect)
  1089.  ONEWORDINLINE(0xA8AB);
  1090.  
  1091. extern pascal Boolean EqualRect(const Rect *rect1, const Rect *rect2)
  1092.  ONEWORDINLINE(0xA8A6);
  1093.  
  1094. extern pascal Boolean EmptyRect(const Rect *r)
  1095.  ONEWORDINLINE(0xA8AE);
  1096.  
  1097. extern pascal void FrameRect(const Rect *r)
  1098.  ONEWORDINLINE(0xA8A1);
  1099.  
  1100. extern pascal void PaintRect(const Rect *r)
  1101.  ONEWORDINLINE(0xA8A2);
  1102.  
  1103. extern pascal void EraseRect(const Rect *r)
  1104.  ONEWORDINLINE(0xA8A3);
  1105.  
  1106. extern pascal void InvertRect(const Rect *r)
  1107.  ONEWORDINLINE(0xA8A4);
  1108.  
  1109. extern pascal void FillRect(const Rect *r, const Pattern *pat)
  1110.  ONEWORDINLINE(0xA8A5);
  1111.  
  1112. extern pascal void FrameOval(const Rect *r)
  1113.  ONEWORDINLINE(0xA8B7);
  1114.  
  1115. extern pascal void PaintOval(const Rect *r)
  1116.  ONEWORDINLINE(0xA8B8);
  1117.  
  1118. extern pascal void EraseOval(const Rect *r)
  1119.  ONEWORDINLINE(0xA8B9);
  1120.  
  1121. extern pascal void InvertOval(const Rect *r)
  1122.  ONEWORDINLINE(0xA8BA);
  1123.  
  1124. extern pascal void FillOval(const Rect *r, const Pattern *pat)
  1125.  ONEWORDINLINE(0xA8BB);
  1126.  
  1127. extern pascal void FrameRoundRect(const Rect *r, short ovalWidth, short ovalHeight)
  1128.  ONEWORDINLINE(0xA8B0);
  1129.  
  1130. extern pascal void PaintRoundRect(const Rect *r, short ovalWidth, short ovalHeight)
  1131.  ONEWORDINLINE(0xA8B1);
  1132.  
  1133. extern pascal void EraseRoundRect(const Rect *r, short ovalWidth, short ovalHeight)
  1134.  ONEWORDINLINE(0xA8B2);
  1135.  
  1136. extern pascal void InvertRoundRect(const Rect *r, short ovalWidth, short ovalHeight)
  1137.  ONEWORDINLINE(0xA8B3);
  1138.  
  1139. extern pascal void FillRoundRect(const Rect *r, short ovalWidth, short ovalHeight, const Pattern *pat)
  1140.  ONEWORDINLINE(0xA8B4);
  1141.  
  1142. extern pascal void FrameArc(const Rect *r, short startAngle, short arcAngle)
  1143.  ONEWORDINLINE(0xA8BE);
  1144.  
  1145. extern pascal void PaintArc(const Rect *r, short startAngle, short arcAngle)
  1146.  ONEWORDINLINE(0xA8BF);
  1147.  
  1148. extern pascal void EraseArc(const Rect *r, short startAngle, short arcAngle)
  1149.  ONEWORDINLINE(0xA8C0);
  1150.  
  1151. extern pascal void InvertArc(const Rect *r, short startAngle, short arcAngle)
  1152.  ONEWORDINLINE(0xA8C1);
  1153.  
  1154. extern pascal void FillArc(const Rect *r, short startAngle, short arcAngle, const Pattern *pat)
  1155.  ONEWORDINLINE(0xA8C2);
  1156.  
  1157. extern pascal RgnHandle NewRgn(void )
  1158.  ONEWORDINLINE(0xA8D8);
  1159.  
  1160. extern pascal void OpenRgn(void )
  1161.  ONEWORDINLINE(0xA8DA);
  1162.  
  1163. extern pascal void CloseRgn(RgnHandle dstRgn)
  1164.  ONEWORDINLINE(0xA8DB);
  1165.  
  1166. extern pascal OSErr BitMapToRegion(RgnHandle region, const BitMap *bMap)
  1167.  ONEWORDINLINE(0xA8D7);
  1168.  
  1169. extern pascal void DisposeRgn(RgnHandle rgn)
  1170.  ONEWORDINLINE(0xA8D9);
  1171.  
  1172. extern pascal void CopyRgn(RgnHandle srcRgn, RgnHandle dstRgn)
  1173.  ONEWORDINLINE(0xA8DC);
  1174.  
  1175. extern pascal void SetEmptyRgn(RgnHandle rgn)
  1176.  ONEWORDINLINE(0xA8DD);
  1177.  
  1178. extern pascal void SetRectRgn(RgnHandle rgn, short left, short top, short right, short bottom)
  1179.  ONEWORDINLINE(0xA8DE);
  1180.  
  1181. extern pascal void RectRgn(RgnHandle rgn, const Rect *r)
  1182.  ONEWORDINLINE(0xA8DF);
  1183.  
  1184. extern pascal void OffsetRgn(RgnHandle rgn, short dh, short dv)
  1185.  ONEWORDINLINE(0xA8E0);
  1186.  
  1187. extern pascal void InsetRgn(RgnHandle rgn, short dh, short dv)
  1188.  ONEWORDINLINE(0xA8E1);
  1189.  
  1190. extern pascal void SectRgn(RgnHandle srcRgnA, RgnHandle srcRgnB, RgnHandle dstRgn)
  1191.  ONEWORDINLINE(0xA8E4);
  1192.  
  1193. extern pascal void UnionRgn(RgnHandle srcRgnA, RgnHandle srcRgnB, RgnHandle dstRgn)
  1194.  ONEWORDINLINE(0xA8E5);
  1195.  
  1196. extern pascal void DiffRgn(RgnHandle srcRgnA, RgnHandle srcRgnB, RgnHandle dstRgn)
  1197.  ONEWORDINLINE(0xA8E6);
  1198.  
  1199. extern pascal void XorRgn(RgnHandle srcRgnA, RgnHandle srcRgnB, RgnHandle dstRgn)
  1200.  ONEWORDINLINE(0xA8E7);
  1201.  
  1202. extern pascal Boolean RectInRgn(const Rect *r, RgnHandle rgn)
  1203.  ONEWORDINLINE(0xA8E9);
  1204.  
  1205. extern pascal Boolean EqualRgn(RgnHandle rgnA, RgnHandle rgnB)
  1206.  ONEWORDINLINE(0xA8E3);
  1207.  
  1208. extern pascal Boolean EmptyRgn(RgnHandle rgn)
  1209.  ONEWORDINLINE(0xA8E2);
  1210.  
  1211. extern pascal void FrameRgn(RgnHandle rgn)
  1212.  ONEWORDINLINE(0xA8D2);
  1213.  
  1214. extern pascal void PaintRgn(RgnHandle rgn)
  1215.  ONEWORDINLINE(0xA8D3);
  1216.  
  1217. extern pascal void EraseRgn(RgnHandle rgn)
  1218.  ONEWORDINLINE(0xA8D4);
  1219.  
  1220. extern pascal void InvertRgn(RgnHandle rgn)
  1221.  ONEWORDINLINE(0xA8D5);
  1222.  
  1223. extern pascal void FillRgn(RgnHandle rgn, const Pattern *pat)
  1224.  ONEWORDINLINE(0xA8D6);
  1225.  
  1226. extern pascal void ScrollRect(const Rect *r, short dh, short dv, RgnHandle updateRgn)
  1227.  ONEWORDINLINE(0xA8EF);
  1228.  
  1229. extern pascal void CopyBits(const BitMap *srcBits, const BitMap *dstBits, const Rect *srcRect, const Rect *dstRect, short mode, RgnHandle maskRgn)
  1230.  ONEWORDINLINE(0xA8EC);
  1231.  
  1232. extern pascal void SeedFill(const void *srcPtr, void *dstPtr, short srcRow, short dstRow, short height, short words, short seedH, short seedV)
  1233.  ONEWORDINLINE(0xA839);
  1234.  
  1235. extern pascal void CalcMask(const void *srcPtr, void *dstPtr, short srcRow, short dstRow, short height, short words)
  1236.  ONEWORDINLINE(0xA838);
  1237.  
  1238. extern pascal void CopyMask(const BitMap *srcBits, const BitMap *maskBits, const BitMap *dstBits, const Rect *srcRect, const Rect *maskRect, const Rect *dstRect)
  1239.  ONEWORDINLINE(0xA817);
  1240.  
  1241. extern pascal PicHandle OpenPicture(const Rect *picFrame)
  1242.  ONEWORDINLINE(0xA8F3);
  1243.  
  1244. extern pascal void PicComment(short kind, short dataSize, Handle dataHandle)
  1245.  ONEWORDINLINE(0xA8F2);
  1246.  
  1247. extern pascal void ClosePicture(void )
  1248.  ONEWORDINLINE(0xA8F4);
  1249.  
  1250. extern pascal void DrawPicture(PicHandle myPicture, const Rect *dstRect)
  1251.  ONEWORDINLINE(0xA8F6);
  1252.  
  1253. extern pascal void KillPicture(PicHandle myPicture)
  1254.  ONEWORDINLINE(0xA8F5);
  1255.  
  1256. extern pascal PolyHandle OpenPoly(void )
  1257.  ONEWORDINLINE(0xA8CB);
  1258.  
  1259. extern pascal void ClosePoly(void )
  1260.  ONEWORDINLINE(0xA8CC);
  1261.  
  1262. extern pascal void KillPoly(PolyHandle poly)
  1263.  ONEWORDINLINE(0xA8CD);
  1264.  
  1265. extern pascal void OffsetPoly(PolyHandle poly, short dh, short dv)
  1266.  ONEWORDINLINE(0xA8CE);
  1267.  
  1268. extern pascal void FramePoly(PolyHandle poly)
  1269.  ONEWORDINLINE(0xA8C6);
  1270.  
  1271. extern pascal void PaintPoly(PolyHandle poly)
  1272.  ONEWORDINLINE(0xA8C7);
  1273.  
  1274. extern pascal void ErasePoly(PolyHandle poly)
  1275.  ONEWORDINLINE(0xA8C8);
  1276.  
  1277. extern pascal void InvertPoly(PolyHandle poly)
  1278.  ONEWORDINLINE(0xA8C9);
  1279.  
  1280. extern pascal void FillPoly(PolyHandle poly, const Pattern *pat)
  1281.  ONEWORDINLINE(0xA8CA);
  1282.  
  1283. extern pascal void SetPt(Point *pt, short h, short v)
  1284.  ONEWORDINLINE(0xA880);
  1285.  
  1286. extern pascal void LocalToGlobal(Point *pt)
  1287.  ONEWORDINLINE(0xA870);
  1288.  
  1289. extern pascal void GlobalToLocal(Point *pt)
  1290.  ONEWORDINLINE(0xA871);
  1291.  
  1292. extern pascal short Random(void )
  1293.  ONEWORDINLINE(0xA861);
  1294.  
  1295. extern pascal void StuffHex(void *thingPtr, ConstStr255Param s)
  1296.  ONEWORDINLINE(0xA866);
  1297.  
  1298. extern pascal Boolean GetPixel(short h, short v)
  1299.  ONEWORDINLINE(0xA865);
  1300.  
  1301. extern pascal void ScalePt(Point *pt, const Rect *srcRect, const Rect *dstRect)
  1302.  ONEWORDINLINE(0xA8F8);
  1303.  
  1304. extern pascal void MapPt(Point *pt, const Rect *srcRect, const Rect *dstRect)
  1305.  ONEWORDINLINE(0xA8F9);
  1306.  
  1307. extern pascal void MapRect(Rect *r, const Rect *srcRect, const Rect *dstRect)
  1308.  ONEWORDINLINE(0xA8FA);
  1309.  
  1310. extern pascal void MapRgn(RgnHandle rgn, const Rect *srcRect, const Rect *dstRect)
  1311.  ONEWORDINLINE(0xA8FB);
  1312.  
  1313. extern pascal void MapPoly(PolyHandle poly, const Rect *srcRect, const Rect *dstRect)
  1314.  ONEWORDINLINE(0xA8FC);
  1315.  
  1316. extern pascal void SetStdProcs(QDProcs *procs)
  1317.  ONEWORDINLINE(0xA8EA);
  1318.  
  1319. extern pascal void StdRect(GrafVerb verb, const Rect *r)
  1320.  ONEWORDINLINE(0xA8A0);
  1321.  
  1322. extern pascal void StdRRect(GrafVerb verb, const Rect *r, short ovalWidth, short ovalHeight)
  1323.  ONEWORDINLINE(0xA8AF);
  1324.  
  1325. extern pascal void StdOval(GrafVerb verb, const Rect *r)
  1326.  ONEWORDINLINE(0xA8B6);
  1327.  
  1328. extern pascal void StdArc(GrafVerb verb, const Rect *r, short startAngle, short arcAngle)
  1329.  ONEWORDINLINE(0xA8BD);
  1330.  
  1331. extern pascal void StdPoly(GrafVerb verb, PolyHandle poly)
  1332.  ONEWORDINLINE(0xA8C5);
  1333.  
  1334. extern pascal void StdRgn(GrafVerb verb, RgnHandle rgn)
  1335.  ONEWORDINLINE(0xA8D1);
  1336.  
  1337. extern pascal void StdBits(const BitMap *srcBits, const Rect *srcRect, const Rect *dstRect, short mode, RgnHandle maskRgn)
  1338.  ONEWORDINLINE(0xA8EB);
  1339.  
  1340. extern pascal void StdComment(short kind, short dataSize, Handle dataHandle)
  1341.  ONEWORDINLINE(0xA8F1);
  1342.  
  1343. extern pascal void StdGetPic(void *dataPtr, short byteCount)
  1344.  ONEWORDINLINE(0xA8EE);
  1345.  
  1346. extern pascal void StdPutPic(const void *dataPtr, short byteCount)
  1347.  ONEWORDINLINE(0xA8F0);
  1348.  
  1349. extern pascal void StdOpcode(const Rect *fromRect, const Rect *toRect, UInt16 opcode, SInt16 version)
  1350.  ONEWORDINLINE(0xABF8);
  1351.  
  1352. extern pascal void AddPt(Point src, Point *dst)
  1353.  ONEWORDINLINE(0xA87E);
  1354.  
  1355. extern pascal Boolean EqualPt(Point pt1, Point pt2)
  1356.  ONEWORDINLINE(0xA881);
  1357.  
  1358. extern pascal Boolean PtInRect(Point pt, const Rect *r)
  1359.  ONEWORDINLINE(0xA8AD);
  1360.  
  1361. extern pascal void Pt2Rect(Point pt1, Point pt2, Rect *dstRect)
  1362.  ONEWORDINLINE(0xA8AC);
  1363.  
  1364. extern pascal void PtToAngle(const Rect *r, Point pt, short *angle)
  1365.  ONEWORDINLINE(0xA8C3);
  1366.  
  1367. extern pascal void SubPt(Point src, Point *dst)
  1368.  ONEWORDINLINE(0xA87F);
  1369.  
  1370. extern pascal Boolean PtInRgn(Point pt, RgnHandle rgn)
  1371.  ONEWORDINLINE(0xA8E8);
  1372.  
  1373. extern pascal void StdLine(Point newPt)
  1374.  ONEWORDINLINE(0xA890);
  1375.  
  1376. extern pascal void OpenCPort(CGrafPtr port)
  1377.  ONEWORDINLINE(0xAA00);
  1378.  
  1379. extern pascal void InitCPort(CGrafPtr port)
  1380.  ONEWORDINLINE(0xAA01);
  1381.  
  1382. extern pascal void CloseCPort(CGrafPtr port)
  1383.  ONEWORDINLINE(0xAA02);
  1384.  
  1385. extern pascal PixMapHandle NewPixMap(void )
  1386.  ONEWORDINLINE(0xAA03);
  1387.  
  1388. extern pascal void DisposePixMap(PixMapHandle pm)
  1389.  ONEWORDINLINE(0xAA04);
  1390.  
  1391. extern pascal void CopyPixMap(PixMapHandle srcPM, PixMapHandle dstPM)
  1392.  ONEWORDINLINE(0xAA05);
  1393.  
  1394. extern pascal PixPatHandle NewPixPat(void )
  1395.  ONEWORDINLINE(0xAA07);
  1396.  
  1397. extern pascal void DisposePixPat(PixPatHandle pp)
  1398.  ONEWORDINLINE(0xAA08);
  1399.  
  1400. extern pascal void CopyPixPat(PixPatHandle srcPP, PixPatHandle dstPP)
  1401.  ONEWORDINLINE(0xAA09);
  1402.  
  1403. extern pascal void PenPixPat(PixPatHandle pp)
  1404.  ONEWORDINLINE(0xAA0A);
  1405.  
  1406. extern pascal void BackPixPat(PixPatHandle pp)
  1407.  ONEWORDINLINE(0xAA0B);
  1408.  
  1409. extern pascal PixPatHandle GetPixPat(short patID)
  1410.  ONEWORDINLINE(0xAA0C);
  1411.  
  1412. extern pascal void MakeRGBPat(PixPatHandle pp, const RGBColor *myColor)
  1413.  ONEWORDINLINE(0xAA0D);
  1414.  
  1415. extern pascal void FillCRect(const Rect *r, PixPatHandle pp)
  1416.  ONEWORDINLINE(0xAA0E);
  1417.  
  1418. extern pascal void FillCOval(const Rect *r, PixPatHandle pp)
  1419.  ONEWORDINLINE(0xAA0F);
  1420.  
  1421. extern pascal void FillCRoundRect(const Rect *r, short ovalWidth, short ovalHeight, PixPatHandle pp)
  1422.  ONEWORDINLINE(0xAA10);
  1423.  
  1424. extern pascal void FillCArc(const Rect *r, short startAngle, short arcAngle, PixPatHandle pp)
  1425.  ONEWORDINLINE(0xAA11);
  1426.  
  1427. extern pascal void FillCRgn(RgnHandle rgn, PixPatHandle pp)
  1428.  ONEWORDINLINE(0xAA12);
  1429.  
  1430. extern pascal void FillCPoly(PolyHandle poly, PixPatHandle pp)
  1431.  ONEWORDINLINE(0xAA13);
  1432.  
  1433. extern pascal void RGBForeColor(const RGBColor *color)
  1434.  ONEWORDINLINE(0xAA14);
  1435.  
  1436. extern pascal void RGBBackColor(const RGBColor *color)
  1437.  ONEWORDINLINE(0xAA15);
  1438.  
  1439. extern pascal void SetCPixel(short h, short v, const RGBColor *cPix)
  1440.  ONEWORDINLINE(0xAA16);
  1441.  
  1442. extern pascal void SetPortPix(PixMapHandle pm)
  1443.  ONEWORDINLINE(0xAA06);
  1444.  
  1445. extern pascal void GetCPixel(short h, short v, RGBColor *cPix)
  1446.  ONEWORDINLINE(0xAA17);
  1447.  
  1448. extern pascal void GetForeColor(RGBColor *color)
  1449.  ONEWORDINLINE(0xAA19);
  1450.  
  1451. extern pascal void GetBackColor(RGBColor *color)
  1452.  ONEWORDINLINE(0xAA1A);
  1453.  
  1454. extern pascal void SeedCFill(const BitMap *srcBits, const BitMap *dstBits, const Rect *srcRect, const Rect *dstRect, short seedH, short seedV, ColorSearchUPP matchProc, long matchData)
  1455.  ONEWORDINLINE(0xAA50);
  1456.  
  1457. extern pascal void CalcCMask(const BitMap *srcBits, const BitMap *dstBits, const Rect *srcRect, const Rect *dstRect, const RGBColor *seedRGB, ColorSearchUPP matchProc, long matchData)
  1458.  ONEWORDINLINE(0xAA4F);
  1459.  
  1460. extern pascal PicHandle OpenCPicture(const OpenCPicParams *newHeader)
  1461.  ONEWORDINLINE(0xAA20);
  1462.  
  1463. extern pascal void OpColor(const RGBColor *color)
  1464.  ONEWORDINLINE(0xAA21);
  1465.  
  1466. extern pascal void HiliteColor(const RGBColor *color)
  1467.  ONEWORDINLINE(0xAA22);
  1468.  
  1469. extern pascal void DisposeCTable(CTabHandle cTable)
  1470.  ONEWORDINLINE(0xAA24);
  1471.  
  1472. extern pascal CTabHandle GetCTable(short ctID)
  1473.  ONEWORDINLINE(0xAA18);
  1474.  
  1475. extern pascal CCrsrHandle GetCCursor(short crsrID)
  1476.  ONEWORDINLINE(0xAA1B);
  1477.  
  1478. extern pascal void SetCCursor(CCrsrHandle cCrsr)
  1479.  ONEWORDINLINE(0xAA1C);
  1480.  
  1481. extern pascal void AllocCursor(void )
  1482.  ONEWORDINLINE(0xAA1D);
  1483.  
  1484. extern pascal void DisposeCCursor(CCrsrHandle cCrsr)
  1485.  ONEWORDINLINE(0xAA26);
  1486.  
  1487. #if OLDROUTINELOCATIONS
  1488. extern pascal CIconHandle GetCIcon(short iconID)
  1489.  ONEWORDINLINE(0xAA1E);
  1490.  
  1491. extern pascal void PlotCIcon(const Rect *theRect, CIconHandle theIcon)
  1492.  ONEWORDINLINE(0xAA1F);
  1493.  
  1494. extern pascal void DisposeCIcon(CIconHandle theIcon)
  1495.  ONEWORDINLINE(0xAA25);
  1496.  
  1497. #endif
  1498. extern pascal void SetStdCProcs(CQDProcs *procs)
  1499.  ONEWORDINLINE(0xAA4E);
  1500.  
  1501. extern pascal GDHandle GetMaxDevice(const Rect *globalRect)
  1502.  ONEWORDINLINE(0xAA27);
  1503.  
  1504. extern pascal long GetCTSeed(void )
  1505.  ONEWORDINLINE(0xAA28);
  1506.  
  1507. extern pascal GDHandle GetDeviceList(void )
  1508.  ONEWORDINLINE(0xAA29);
  1509.  
  1510. extern pascal GDHandle GetMainDevice(void )
  1511.  ONEWORDINLINE(0xAA2A);
  1512.  
  1513. extern pascal GDHandle GetNextDevice(GDHandle curDevice)
  1514.  ONEWORDINLINE(0xAA2B);
  1515.  
  1516. extern pascal Boolean TestDeviceAttribute(GDHandle gdh, short attribute)
  1517.  ONEWORDINLINE(0xAA2C);
  1518.  
  1519. extern pascal void SetDeviceAttribute(GDHandle gdh, short attribute, Boolean value)
  1520.  ONEWORDINLINE(0xAA2D);
  1521.  
  1522. extern pascal void InitGDevice(short qdRefNum, long mode, GDHandle gdh)
  1523.  ONEWORDINLINE(0xAA2E);
  1524.  
  1525. extern pascal GDHandle NewGDevice(short refNum, long mode)
  1526.  ONEWORDINLINE(0xAA2F);
  1527.  
  1528. extern pascal void DisposeGDevice(GDHandle gdh)
  1529.  ONEWORDINLINE(0xAA30);
  1530.  
  1531. extern pascal void SetGDevice(GDHandle gd)
  1532.  ONEWORDINLINE(0xAA31);
  1533.  
  1534. extern pascal GDHandle GetGDevice(void )
  1535.  ONEWORDINLINE(0xAA32);
  1536.  
  1537. extern pascal long Color2Index(const RGBColor *myColor)
  1538.  ONEWORDINLINE(0xAA33);
  1539.  
  1540. extern pascal void Index2Color(long index, RGBColor *aColor)
  1541.  ONEWORDINLINE(0xAA34);
  1542.  
  1543. extern pascal void InvertColor(RGBColor *myColor)
  1544.  ONEWORDINLINE(0xAA35);
  1545.  
  1546. extern pascal Boolean RealColor(const RGBColor *color)
  1547.  ONEWORDINLINE(0xAA36);
  1548.  
  1549. extern pascal void GetSubTable(CTabHandle myColors, short iTabRes, CTabHandle targetTbl)
  1550.  ONEWORDINLINE(0xAA37);
  1551.  
  1552. extern pascal void MakeITable(CTabHandle cTabH, ITabHandle iTabH, short res)
  1553.  ONEWORDINLINE(0xAA39);
  1554.  
  1555. extern pascal void AddSearch(ColorSearchUPP searchProc)
  1556.  ONEWORDINLINE(0xAA3A);
  1557.  
  1558. extern pascal void AddComp(ColorComplementUPP compProc)
  1559.  ONEWORDINLINE(0xAA3B);
  1560.  
  1561. extern pascal void DelSearch(ColorSearchUPP searchProc)
  1562.  ONEWORDINLINE(0xAA4C);
  1563.  
  1564. extern pascal void DelComp(ColorComplementUPP compProc)
  1565.  ONEWORDINLINE(0xAA4D);
  1566.  
  1567. extern pascal void SetClientID(short id)
  1568.  ONEWORDINLINE(0xAA3C);
  1569.  
  1570. extern pascal void ProtectEntry(short index, Boolean protect)
  1571.  ONEWORDINLINE(0xAA3D);
  1572.  
  1573. extern pascal void ReserveEntry(short index, Boolean reserve)
  1574.  ONEWORDINLINE(0xAA3E);
  1575.  
  1576. extern pascal void SetEntries(short start, short count, CSpecArray aTable)
  1577.  ONEWORDINLINE(0xAA3F);
  1578.  
  1579. extern pascal void SaveEntries(CTabHandle srcTable, CTabHandle resultTable, ReqListRec *selection)
  1580.  ONEWORDINLINE(0xAA49);
  1581.  
  1582. extern pascal void RestoreEntries(CTabHandle srcTable, CTabHandle dstTable, ReqListRec *selection)
  1583.  ONEWORDINLINE(0xAA4A);
  1584.  
  1585. extern pascal short QDError(void )
  1586.  ONEWORDINLINE(0xAA40);
  1587.  
  1588. extern pascal void CopyDeepMask(const BitMap *srcBits, const BitMap *maskBits, const BitMap *dstBits, const Rect *srcRect, const Rect *maskRect, const Rect *dstRect, short mode, RgnHandle maskRgn)
  1589.  ONEWORDINLINE(0xAA51);
  1590.  
  1591. extern pascal void DeviceLoop(RgnHandle drawingRgn, DeviceLoopDrawingUPP drawingProc, long userData, DeviceLoopFlags flags)
  1592.  ONEWORDINLINE(0xABCA);
  1593.  
  1594. #if FOR_SYSTEM8_COOPERATIVE
  1595. extern pascal void NativeDeviceLoop(RgnHandle drawingRgn, NativeDeviceLoopDrawingProcPtr drawingProc, long userData, DeviceLoopFlags flags);
  1596.  
  1597. #endif
  1598.  
  1599. #if GENERATING68K && !GENERATINGCFM
  1600. #pragma parameter __A0 GetMaskTable
  1601. #endif
  1602. extern pascal Ptr GetMaskTable(void )
  1603.  ONEWORDINLINE(0xA836);
  1604.  
  1605. extern pascal PatHandle GetPattern(short patternID)
  1606.  ONEWORDINLINE(0xA9B8);
  1607.  
  1608. extern pascal CursHandle GetCursor(short cursorID)
  1609.  ONEWORDINLINE(0xA9B9);
  1610.  
  1611. extern pascal PicHandle GetPicture(short pictureID)
  1612.  ONEWORDINLINE(0xA9BC);
  1613.  
  1614. extern pascal long DeltaPoint(Point ptA, Point ptB)
  1615.  ONEWORDINLINE(0xA94F);
  1616.  
  1617. extern pascal void ShieldCursor(const Rect *shieldRect, Point offsetPt)
  1618.  ONEWORDINLINE(0xA855);
  1619.  
  1620. extern pascal void ScreenRes(short *scrnHRes, short *scrnVRes)
  1621.  SIXWORDINLINE(0x225F, 0x32B8, 0x0102, 0x225F, 0x32B8, 0x0104);
  1622.  
  1623. extern pascal void GetIndPattern(Pattern *thePat, short patternListID, short index);
  1624.  
  1625. #if CGLUESUPPORTED
  1626. extern Boolean ptinrect(const Point *pt, const Rect *r);
  1627.  
  1628. extern void pt2rect(const Point *pt1, const Point *pt2, Rect *destRect);
  1629.  
  1630. extern void pttoangle(const Rect *r, const Point *pt, short *angle);
  1631.  
  1632. extern Boolean ptinrgn(const Point *pt, RgnHandle rgn);
  1633.  
  1634. extern void addpt(const Point *src, Point *dst);
  1635.  
  1636. extern void subpt(const Point *src, Point *dst);
  1637.  
  1638. extern Boolean equalpt(const Point *pt1, const Point *pt2);
  1639.  
  1640. extern void stuffhex(void *thingPtr, const char *s);
  1641.  
  1642. extern void stdline(const Point *newPt);
  1643.  
  1644. extern void shieldcursor(const Rect *shieldRect, Point *offsetPt);
  1645.  
  1646. extern long deltapoint(Point *ptA, Point *ptB);
  1647.  
  1648. #endif
  1649. #if OLDROUTINENAMES
  1650. #define DisposPixMap(pm) DisposePixMap(pm)
  1651. #define DisposPixPat(pp) DisposePixPat(pp)
  1652. #define DisposCTable(cTable) DisposeCTable(cTable)
  1653. #define DisposCCursor(cCrsr) DisposeCCursor(cCrsr)
  1654. #if OLDROUTINELOCATIONS
  1655. #define DisposCIcon(theIcon) DisposeCIcon(theIcon)
  1656. #endif
  1657. #define DisposGDevice(gdh) DisposeGDevice(gdh)
  1658. #endif
  1659. /*
  1660.     From ToolUtils.i
  1661. */
  1662. extern pascal void PackBits(Ptr *srcPtr, Ptr *dstPtr, short srcBytes)
  1663.  ONEWORDINLINE(0xA8CF);
  1664.  
  1665. extern pascal void UnpackBits(Ptr *srcPtr, Ptr *dstPtr, short dstBytes)
  1666.  ONEWORDINLINE(0xA8D0);
  1667.  
  1668. #endif
  1669. #if FOR_SYSTEM7_AND_SYSTEM8_PREEMPTIVE
  1670. /*
  1671.     Also from ToolUtils.i
  1672. */
  1673. extern pascal Fixed SlopeFromAngle(short angle)
  1674.  ONEWORDINLINE(0xA8BC);
  1675.  
  1676. extern pascal short AngleFromSlope(Fixed slope)
  1677.  ONEWORDINLINE(0xA8C4);
  1678.  
  1679. #endif
  1680.  
  1681. #if PRAGMA_ALIGN_SUPPORTED
  1682. #pragma options align=reset
  1683. #endif
  1684.  
  1685. #if PRAGMA_IMPORT_SUPPORTED
  1686. #pragma import off
  1687. #endif
  1688.  
  1689. #ifdef __cplusplus
  1690. }
  1691. #endif
  1692.  
  1693. #endif /* __QUICKDRAW__ */
  1694.  
  1695.